﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using GBIT.Web;
using WebComponents;
using WebComponents.Data;
using System.Collections.Generic;
using WebComponents.Security;
using WebComponents.Caching;

public partial class NhomSanPhamList : UserControlBase {
  protected void Page_Load(object sender, EventArgs e) {
    this.AddModule = "SanPham/ThemNhomSanPham.ascx";
    if (!Page.IsPostBack) {
      ShowCategory(CatetoryType.News);
    }
    this.AddEnabled = true;
    this.Title = "Danh sách chuyên mục";
  }
  private void ShowCategory(CatetoryType type) {
    List<CategoryInfo> list = new List<CategoryInfo>();
    CategoryController.LoadCategory(ref list, type);
    rptCate.DataSource = list;
    rptCate.DataBind();
    if (list.Count == 0) {
      this.EditEnabled = false;
      this.DeleteEnabled = false;
    } else {
      this.DeleteEnabled = true;
      this.EditEnabled = true;
    }
  }
  protected override void OnTaskSubmit(TaskArgs e) {
    CategoryInfo cate = null;
    switch (e.Task) {
      case Task.ChangeStatus:
        cate = CategoryController.GetByCategoryID(ToInt(e.ID));
        if (cate != null) {
          if (cate.IsActive == true)
            cate.IsActive = false;
          else
            cate.IsActive = true;
          CategoryController.Update(cate);
          Security.ShowClientMessage(this.Page, "Thay đổi trạng thái chuyên mục thành công");
        }
        break;
      case Task.MoveDown:
        int kq = CategoryController.MoveDown(ToInt(e.ID));
        if (kq > 0)
          Security.ShowClientMessage(this.Page, "Di chuyển chuyên mục xuống dưới thành công");
        else
          Security.ShowClientMessageError(this.Page, "Di chuyển chuyên mục xuống dưới không thành công.\r\nVì chuyên mục di chuyển là chuyên mục cuối.");
        break;
      case Task.MoveUp:
        kq = CategoryController.MoveUp(ToInt(e.ID));
        if (kq > 0)
          Security.ShowClientMessage(this.Page, "Di chuyển chuyên mục lên trên thành công");
        else
          Security.ShowClientMessageError(this.Page, "Di chuyển chuyên mục lên trên không thành công.\r\nVì chuyên mục di chuyển là chuyên  mục đầu.");
        break;
      case Task.SaveOrder:
        bool success = false;
        foreach (RepeaterItem item in rptCate.Items) {
          CategoryInfo c = item.DataItem as CategoryInfo;
          TextBox txtOrder = item.FindControl("txtOrder") as TextBox;
          if (c != null && txtOrder != null && c.OrderID != ToInt(txtOrder.Text) && ToInt(txtOrder.Text) > 0) {
            CategoryController.UpdateOrderId(c.CategoryID, ToInt(txtOrder.Text));
            success = true;
          }
        }
        if (success) {
          Security.ShowClientMessage(this.Page, "Cập nhật thông tin vị trí chuyên mục thành công");
          CacheManager.RemoveCache(CategoryController.cacheKey);
        } else
          Security.ShowClientMessage(this.Page, "Không có chuyên mục nào thay đổi vị trí");
        break;
    }
    ShowCategory((CatetoryType)ConvertType.ToInt(cmbTheLoaiChuyenMuc.SelectedValue));
  }
  protected override void OnDeleteRecord() {
    foreach (RepeaterItem item in rptCate.Items) {
      HtmlInputCheckBox chk = item.FindControl("chkCate") as HtmlInputCheckBox;
      if (chk != null && chk.Checked) {
        CategoryController.Delete(ConvertType.ToInt(chk.Attributes["title"].ToString()));
      }
      Repeater rpt = item.FindControl("rptChildCate") as Repeater;
      if (rpt != null) {
        foreach (RepeaterItem i in rpt.Items) {
          HtmlInputCheckBox c = i.FindControl("chkCate") as HtmlInputCheckBox;
          if (c != null && c.Checked) {
            CategoryController.Delete(ConvertType.ToInt(c.Attributes["title"].ToString()));
          }
        }
      }
    }
    ShowCategory((CatetoryType)ConvertType.ToInt(cmbTheLoaiChuyenMuc.SelectedValue));
  }
  protected void cmbTheLoaiChuyenMuc_SelectedIndexChanged(object sender, EventArgs e) {
    ShowCategory((CatetoryType)ConvertType.ToInt(cmbTheLoaiChuyenMuc.SelectedValue));
  }
}
